/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
import * as $protobuf from "protobufjs/minimal";

// Common aliases
const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
const $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

export const cn = $root.cn = (() => {

    /**
     * Namespace cn.
     * @exports cn
     * @namespace
     */
    const cn = {};

    cn.owng = (function() {

        /**
         * Namespace owng.
         * @memberof cn
         * @namespace
         */
        const owng = {};

        owng.protobuf = (function() {

            /**
             * Namespace protobuf.
             * @memberof cn.owng
             * @namespace
             */
            const protobuf = {};

            protobuf.plaza = (function() {

                /**
                 * Namespace plaza.
                 * @memberof cn.owng.protobuf
                 * @namespace
                 */
                const plaza = {};

                plaza.Request = (function() {

                    /**
                     * Properties of a Request.
                     * @memberof cn.owng.protobuf.plaza
                     * @interface IRequest
                     * @property {cn.owng.protobuf.plaza.Request.ILogin|null} [login] Request login
                     * @property {cn.owng.protobuf.plaza.Request.IRegister|null} [register] Request register
                     * @property {cn.owng.protobuf.plaza.Request.ILogout|null} [logout] Request logout
                     * @property {cn.owng.protobuf.plaza.Request.IBroadcast|null} [broadcast] Request broadcast
                     * @property {cn.owng.protobuf.plaza.Request.IGame|null} [game] Request game
                     * @property {cn.owng.protobuf.plaza.Request.ICoin|null} [coin] Request coin
                     * @property {cn.owng.protobuf.plaza.Request.IDiamond|null} [diamond] Request diamond
                     */

                    /**
                     * Constructs a new Request.
                     * @memberof cn.owng.protobuf.plaza
                     * @classdesc Represents a Request.
                     * @implements IRequest
                     * @constructor
                     * @param {cn.owng.protobuf.plaza.IRequest=} [properties] Properties to set
                     */
                    function Request(properties) {
                        if (properties)
                            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Request login.
                     * @member {cn.owng.protobuf.plaza.Request.ILogin|null|undefined} login
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.login = null;

                    /**
                     * Request register.
                     * @member {cn.owng.protobuf.plaza.Request.IRegister|null|undefined} register
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.register = null;

                    /**
                     * Request logout.
                     * @member {cn.owng.protobuf.plaza.Request.ILogout|null|undefined} logout
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.logout = null;

                    /**
                     * Request broadcast.
                     * @member {cn.owng.protobuf.plaza.Request.IBroadcast|null|undefined} broadcast
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.broadcast = null;

                    /**
                     * Request game.
                     * @member {cn.owng.protobuf.plaza.Request.IGame|null|undefined} game
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.game = null;

                    /**
                     * Request coin.
                     * @member {cn.owng.protobuf.plaza.Request.ICoin|null|undefined} coin
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.coin = null;

                    /**
                     * Request diamond.
                     * @member {cn.owng.protobuf.plaza.Request.IDiamond|null|undefined} diamond
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Request.prototype.diamond = null;

                    // OneOf field names bound to virtual getters and setters
                    let $oneOfFields;

                    /**
                     * Request messageBody.
                     * @member {"login"|"register"|"logout"|"broadcast"|"game"|"coin"|"diamond"|undefined} messageBody
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     */
                    Object.defineProperty(Request.prototype, "messageBody", {
                        get: $util.oneOfGetter($oneOfFields = ["login", "register", "logout", "broadcast", "game", "coin", "diamond"]),
                        set: $util.oneOfSetter($oneOfFields)
                    });

                    /**
                     * Creates a new Request instance using the specified properties.
                     * @function create
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {cn.owng.protobuf.plaza.IRequest=} [properties] Properties to set
                     * @returns {cn.owng.protobuf.plaza.Request} Request instance
                     */
                    Request.create = function create(properties) {
                        return new Request(properties);
                    };

                    /**
                     * Encodes the specified Request message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.verify|verify} messages.
                     * @function encode
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {cn.owng.protobuf.plaza.IRequest} message Request message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Request.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.login != null && Object.hasOwnProperty.call(message, "login"))
                            $root.cn.owng.protobuf.plaza.Request.Login.encode(message.login, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                        if (message.register != null && Object.hasOwnProperty.call(message, "register"))
                            $root.cn.owng.protobuf.plaza.Request.Register.encode(message.register, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                        if (message.logout != null && Object.hasOwnProperty.call(message, "logout"))
                            $root.cn.owng.protobuf.plaza.Request.Logout.encode(message.logout, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                        if (message.broadcast != null && Object.hasOwnProperty.call(message, "broadcast"))
                            $root.cn.owng.protobuf.plaza.Request.Broadcast.encode(message.broadcast, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                        if (message.game != null && Object.hasOwnProperty.call(message, "game"))
                            $root.cn.owng.protobuf.plaza.Request.Game.encode(message.game, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                        if (message.coin != null && Object.hasOwnProperty.call(message, "coin"))
                            $root.cn.owng.protobuf.plaza.Request.Coin.encode(message.coin, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
                        if (message.diamond != null && Object.hasOwnProperty.call(message, "diamond"))
                            $root.cn.owng.protobuf.plaza.Request.Diamond.encode(message.diamond, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
                        return writer;
                    };

                    /**
                     * Encodes the specified Request message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {cn.owng.protobuf.plaza.IRequest} message Request message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Request.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Request message from the specified reader or buffer.
                     * @function decode
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {cn.owng.protobuf.plaza.Request} Request
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Request.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request();
                        while (reader.pos < end) {
                            let tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.login = $root.cn.owng.protobuf.plaza.Request.Login.decode(reader, reader.uint32());
                                    break;
                                }
                            case 2: {
                                    message.register = $root.cn.owng.protobuf.plaza.Request.Register.decode(reader, reader.uint32());
                                    break;
                                }
                            case 3: {
                                    message.logout = $root.cn.owng.protobuf.plaza.Request.Logout.decode(reader, reader.uint32());
                                    break;
                                }
                            case 4: {
                                    message.broadcast = $root.cn.owng.protobuf.plaza.Request.Broadcast.decode(reader, reader.uint32());
                                    break;
                                }
                            case 5: {
                                    message.game = $root.cn.owng.protobuf.plaza.Request.Game.decode(reader, reader.uint32());
                                    break;
                                }
                            case 6: {
                                    message.coin = $root.cn.owng.protobuf.plaza.Request.Coin.decode(reader, reader.uint32());
                                    break;
                                }
                            case 7: {
                                    message.diamond = $root.cn.owng.protobuf.plaza.Request.Diamond.decode(reader, reader.uint32());
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Request message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {cn.owng.protobuf.plaza.Request} Request
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Request.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Request message.
                     * @function verify
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Request.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        let properties = {};
                        if (message.login != null && message.hasOwnProperty("login")) {
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Login.verify(message.login);
                                if (error)
                                    return "login." + error;
                            }
                        }
                        if (message.register != null && message.hasOwnProperty("register")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Register.verify(message.register);
                                if (error)
                                    return "register." + error;
                            }
                        }
                        if (message.logout != null && message.hasOwnProperty("logout")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Logout.verify(message.logout);
                                if (error)
                                    return "logout." + error;
                            }
                        }
                        if (message.broadcast != null && message.hasOwnProperty("broadcast")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Broadcast.verify(message.broadcast);
                                if (error)
                                    return "broadcast." + error;
                            }
                        }
                        if (message.game != null && message.hasOwnProperty("game")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Game.verify(message.game);
                                if (error)
                                    return "game." + error;
                            }
                        }
                        if (message.coin != null && message.hasOwnProperty("coin")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Coin.verify(message.coin);
                                if (error)
                                    return "coin." + error;
                            }
                        }
                        if (message.diamond != null && message.hasOwnProperty("diamond")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Request.Diamond.verify(message.diamond);
                                if (error)
                                    return "diamond." + error;
                            }
                        }
                        return null;
                    };

                    /**
                     * Creates a Request message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {cn.owng.protobuf.plaza.Request} Request
                     */
                    Request.fromObject = function fromObject(object) {
                        if (object instanceof $root.cn.owng.protobuf.plaza.Request)
                            return object;
                        let message = new $root.cn.owng.protobuf.plaza.Request();
                        if (object.login != null) {
                            if (typeof object.login !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.login: object expected");
                            message.login = $root.cn.owng.protobuf.plaza.Request.Login.fromObject(object.login);
                        }
                        if (object.register != null) {
                            if (typeof object.register !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.register: object expected");
                            message.register = $root.cn.owng.protobuf.plaza.Request.Register.fromObject(object.register);
                        }
                        if (object.logout != null) {
                            if (typeof object.logout !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.logout: object expected");
                            message.logout = $root.cn.owng.protobuf.plaza.Request.Logout.fromObject(object.logout);
                        }
                        if (object.broadcast != null) {
                            if (typeof object.broadcast !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.broadcast: object expected");
                            message.broadcast = $root.cn.owng.protobuf.plaza.Request.Broadcast.fromObject(object.broadcast);
                        }
                        if (object.game != null) {
                            if (typeof object.game !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.game: object expected");
                            message.game = $root.cn.owng.protobuf.plaza.Request.Game.fromObject(object.game);
                        }
                        if (object.coin != null) {
                            if (typeof object.coin !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.coin: object expected");
                            message.coin = $root.cn.owng.protobuf.plaza.Request.Coin.fromObject(object.coin);
                        }
                        if (object.diamond != null) {
                            if (typeof object.diamond !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Request.diamond: object expected");
                            message.diamond = $root.cn.owng.protobuf.plaza.Request.Diamond.fromObject(object.diamond);
                        }
                        return message;
                    };

                    /**
                     * Creates a plain object from a Request message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {cn.owng.protobuf.plaza.Request} message Request
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Request.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        let object = {};
                        if (message.login != null && message.hasOwnProperty("login")) {
                            object.login = $root.cn.owng.protobuf.plaza.Request.Login.toObject(message.login, options);
                            if (options.oneofs)
                                object.messageBody = "login";
                        }
                        if (message.register != null && message.hasOwnProperty("register")) {
                            object.register = $root.cn.owng.protobuf.plaza.Request.Register.toObject(message.register, options);
                            if (options.oneofs)
                                object.messageBody = "register";
                        }
                        if (message.logout != null && message.hasOwnProperty("logout")) {
                            object.logout = $root.cn.owng.protobuf.plaza.Request.Logout.toObject(message.logout, options);
                            if (options.oneofs)
                                object.messageBody = "logout";
                        }
                        if (message.broadcast != null && message.hasOwnProperty("broadcast")) {
                            object.broadcast = $root.cn.owng.protobuf.plaza.Request.Broadcast.toObject(message.broadcast, options);
                            if (options.oneofs)
                                object.messageBody = "broadcast";
                        }
                        if (message.game != null && message.hasOwnProperty("game")) {
                            object.game = $root.cn.owng.protobuf.plaza.Request.Game.toObject(message.game, options);
                            if (options.oneofs)
                                object.messageBody = "game";
                        }
                        if (message.coin != null && message.hasOwnProperty("coin")) {
                            object.coin = $root.cn.owng.protobuf.plaza.Request.Coin.toObject(message.coin, options);
                            if (options.oneofs)
                                object.messageBody = "coin";
                        }
                        if (message.diamond != null && message.hasOwnProperty("diamond")) {
                            object.diamond = $root.cn.owng.protobuf.plaza.Request.Diamond.toObject(message.diamond, options);
                            if (options.oneofs)
                                object.messageBody = "diamond";
                        }
                        return object;
                    };

                    /**
                     * Converts this Request to JSON.
                     * @function toJSON
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Request.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Request
                     * @function getTypeUrl
                     * @memberof cn.owng.protobuf.plaza.Request
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Request.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request";
                    };

                    Request.Login = (function() {

                        /**
                         * Properties of a Login.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface ILogin
                         * @property {string|null} [username] Login username
                         * @property {string|null} [password] Login password
                         */

                        /**
                         * Constructs a new Login.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Login.
                         * @implements ILogin
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.ILogin=} [properties] Properties to set
                         */
                        function Login(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Login username.
                         * @member {string} username
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @instance
                         */
                        Login.prototype.username = "";

                        /**
                         * Login password.
                         * @member {string} password
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @instance
                         */
                        Login.prototype.password = "";

                        /**
                         * Creates a new Login instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogin=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Login} Login instance
                         */
                        Login.create = function create(properties) {
                            return new Login(properties);
                        };

                        /**
                         * Encodes the specified Login message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Login.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogin} message Login message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Login.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.username != null && Object.hasOwnProperty.call(message, "username"))
                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.username);
                            if (message.password != null && Object.hasOwnProperty.call(message, "password"))
                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.password);
                            return writer;
                        };

                        /**
                         * Encodes the specified Login message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Login.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogin} message Login message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Login.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Login message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Login} Login
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Login.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Login();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.username = reader.string();
                                        break;
                                    }
                                case 2: {
                                        message.password = reader.string();
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Login message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Login} Login
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Login.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Login message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Login.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.username != null && message.hasOwnProperty("username"))
                                if (!$util.isString(message.username))
                                    return "username: string expected";
                            if (message.password != null && message.hasOwnProperty("password"))
                                if (!$util.isString(message.password))
                                    return "password: string expected";
                            return null;
                        };

                        /**
                         * Creates a Login message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Login} Login
                         */
                        Login.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Login)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Request.Login();
                            if (object.username != null)
                                message.username = String(object.username);
                            if (object.password != null)
                                message.password = String(object.password);
                            return message;
                        };

                        /**
                         * Creates a plain object from a Login message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Login} message Login
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Login.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.defaults) {
                                object.username = "";
                                object.password = "";
                            }
                            if (message.username != null && message.hasOwnProperty("username"))
                                object.username = message.username;
                            if (message.password != null && message.hasOwnProperty("password"))
                                object.password = message.password;
                            return object;
                        };

                        /**
                         * Converts this Login to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Login.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Login
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Login
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Login";
                        };

                        return Login;
                    })();

                    Request.Register = (function() {

                        /**
                         * Properties of a Register.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface IRegister
                         * @property {string|null} [username] Register username
                         * @property {string|null} [password] Register password
                         * @property {string|null} [confirm] Register confirm
                         */

                        /**
                         * Constructs a new Register.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Register.
                         * @implements IRegister
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.IRegister=} [properties] Properties to set
                         */
                        function Register(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Register username.
                         * @member {string} username
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @instance
                         */
                        Register.prototype.username = "";

                        /**
                         * Register password.
                         * @member {string} password
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @instance
                         */
                        Register.prototype.password = "";

                        /**
                         * Register confirm.
                         * @member {string} confirm
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @instance
                         */
                        Register.prototype.confirm = "";

                        /**
                         * Creates a new Register instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IRegister=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Register} Register instance
                         */
                        Register.create = function create(properties) {
                            return new Register(properties);
                        };

                        /**
                         * Encodes the specified Register message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Register.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IRegister} message Register message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Register.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.username != null && Object.hasOwnProperty.call(message, "username"))
                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.username);
                            if (message.password != null && Object.hasOwnProperty.call(message, "password"))
                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.password);
                            if (message.confirm != null && Object.hasOwnProperty.call(message, "confirm"))
                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.confirm);
                            return writer;
                        };

                        /**
                         * Encodes the specified Register message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Register.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IRegister} message Register message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Register.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Register message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Register} Register
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Register.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Register();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.username = reader.string();
                                        break;
                                    }
                                case 2: {
                                        message.password = reader.string();
                                        break;
                                    }
                                case 3: {
                                        message.confirm = reader.string();
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Register message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Register} Register
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Register.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Register message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Register.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.username != null && message.hasOwnProperty("username"))
                                if (!$util.isString(message.username))
                                    return "username: string expected";
                            if (message.password != null && message.hasOwnProperty("password"))
                                if (!$util.isString(message.password))
                                    return "password: string expected";
                            if (message.confirm != null && message.hasOwnProperty("confirm"))
                                if (!$util.isString(message.confirm))
                                    return "confirm: string expected";
                            return null;
                        };

                        /**
                         * Creates a Register message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Register} Register
                         */
                        Register.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Register)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Request.Register();
                            if (object.username != null)
                                message.username = String(object.username);
                            if (object.password != null)
                                message.password = String(object.password);
                            if (object.confirm != null)
                                message.confirm = String(object.confirm);
                            return message;
                        };

                        /**
                         * Creates a plain object from a Register message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Register} message Register
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Register.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.defaults) {
                                object.username = "";
                                object.password = "";
                                object.confirm = "";
                            }
                            if (message.username != null && message.hasOwnProperty("username"))
                                object.username = message.username;
                            if (message.password != null && message.hasOwnProperty("password"))
                                object.password = message.password;
                            if (message.confirm != null && message.hasOwnProperty("confirm"))
                                object.confirm = message.confirm;
                            return object;
                        };

                        /**
                         * Converts this Register to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Register.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Register
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Register
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Register.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Register";
                        };

                        return Register;
                    })();

                    Request.Logout = (function() {

                        /**
                         * Properties of a Logout.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface ILogout
                         */

                        /**
                         * Constructs a new Logout.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Logout.
                         * @implements ILogout
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.ILogout=} [properties] Properties to set
                         */
                        function Logout(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Logout instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogout=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Logout} Logout instance
                         */
                        Logout.create = function create(properties) {
                            return new Logout(properties);
                        };

                        /**
                         * Encodes the specified Logout message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Logout.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogout} message Logout message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Logout.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Logout message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Logout.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ILogout} message Logout message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Logout.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Logout message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Logout} Logout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Logout.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Logout();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Logout message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Logout} Logout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Logout.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Logout message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Logout.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Logout message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Logout} Logout
                         */
                        Logout.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Logout)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Request.Logout();
                        };

                        /**
                         * Creates a plain object from a Logout message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Logout} message Logout
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Logout.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Logout to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Logout.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Logout
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Logout
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Logout.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Logout";
                        };

                        return Logout;
                    })();

                    Request.Broadcast = (function() {

                        /**
                         * Properties of a Broadcast.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface IBroadcast
                         */

                        /**
                         * Constructs a new Broadcast.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Broadcast.
                         * @implements IBroadcast
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.IBroadcast=} [properties] Properties to set
                         */
                        function Broadcast(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Broadcast instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IBroadcast=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Broadcast} Broadcast instance
                         */
                        Broadcast.create = function create(properties) {
                            return new Broadcast(properties);
                        };

                        /**
                         * Encodes the specified Broadcast message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Broadcast.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IBroadcast} message Broadcast message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Broadcast.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Broadcast message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Broadcast.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IBroadcast} message Broadcast message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Broadcast.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Broadcast message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Broadcast} Broadcast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Broadcast.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Broadcast();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Broadcast message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Broadcast} Broadcast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Broadcast.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Broadcast message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Broadcast.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Broadcast message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Broadcast} Broadcast
                         */
                        Broadcast.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Broadcast)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Request.Broadcast();
                        };

                        /**
                         * Creates a plain object from a Broadcast message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Broadcast} message Broadcast
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Broadcast.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Broadcast to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Broadcast.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Broadcast
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Broadcast
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Broadcast.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Broadcast";
                        };

                        return Broadcast;
                    })();

                    Request.Game = (function() {

                        /**
                         * Properties of a Game.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface IGame
                         */

                        /**
                         * Constructs a new Game.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Game.
                         * @implements IGame
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.IGame=} [properties] Properties to set
                         */
                        function Game(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Game instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IGame=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Game} Game instance
                         */
                        Game.create = function create(properties) {
                            return new Game(properties);
                        };

                        /**
                         * Encodes the specified Game message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Game.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IGame} message Game message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Game.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Game message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Game.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IGame} message Game message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Game.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Game message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Game} Game
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Game.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Game();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Game message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Game} Game
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Game.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Game message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Game.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Game message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Game} Game
                         */
                        Game.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Game)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Request.Game();
                        };

                        /**
                         * Creates a plain object from a Game message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Game} message Game
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Game.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Game to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Game.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Game
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Game
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Game.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Game";
                        };

                        return Game;
                    })();

                    Request.Coin = (function() {

                        /**
                         * Properties of a Coin.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface ICoin
                         */

                        /**
                         * Constructs a new Coin.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Coin.
                         * @implements ICoin
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.ICoin=} [properties] Properties to set
                         */
                        function Coin(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Coin instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ICoin=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Coin} Coin instance
                         */
                        Coin.create = function create(properties) {
                            return new Coin(properties);
                        };

                        /**
                         * Encodes the specified Coin message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Coin.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ICoin} message Coin message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Coin.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Coin message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Coin.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.ICoin} message Coin message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Coin.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Coin message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Coin} Coin
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Coin.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Coin();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Coin message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Coin} Coin
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Coin.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Coin message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Coin.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Coin message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Coin} Coin
                         */
                        Coin.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Coin)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Request.Coin();
                        };

                        /**
                         * Creates a plain object from a Coin message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Coin} message Coin
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Coin.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Coin to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Coin.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Coin
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Coin
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Coin.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Coin";
                        };

                        return Coin;
                    })();

                    Request.Diamond = (function() {

                        /**
                         * Properties of a Diamond.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @interface IDiamond
                         */

                        /**
                         * Constructs a new Diamond.
                         * @memberof cn.owng.protobuf.plaza.Request
                         * @classdesc Represents a Diamond.
                         * @implements IDiamond
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Request.IDiamond=} [properties] Properties to set
                         */
                        function Diamond(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Diamond instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IDiamond=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Request.Diamond} Diamond instance
                         */
                        Diamond.create = function create(properties) {
                            return new Diamond(properties);
                        };

                        /**
                         * Encodes the specified Diamond message. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Diamond.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IDiamond} message Diamond message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Diamond.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Diamond message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Request.Diamond.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.IDiamond} message Diamond message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Diamond.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Diamond message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Request.Diamond} Diamond
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Diamond.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Request.Diamond();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Diamond message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Request.Diamond} Diamond
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Diamond.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Diamond message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Diamond.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Diamond message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Request.Diamond} Diamond
                         */
                        Diamond.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Request.Diamond)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Request.Diamond();
                        };

                        /**
                         * Creates a plain object from a Diamond message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Request.Diamond} message Diamond
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Diamond.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Diamond to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Diamond.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Diamond
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Request.Diamond
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Diamond.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Request.Diamond";
                        };

                        return Diamond;
                    })();

                    return Request;
                })();

                plaza.Response = (function() {

                    /**
                     * Properties of a Response.
                     * @memberof cn.owng.protobuf.plaza
                     * @interface IResponse
                     * @property {cn.owng.protobuf.plaza.Response.ILogin|null} [login] Response login
                     * @property {cn.owng.protobuf.plaza.Response.IRegister|null} [register] Response register
                     * @property {cn.owng.protobuf.plaza.Response.ILogout|null} [logout] Response logout
                     * @property {cn.owng.protobuf.plaza.Response.IBroadcast|null} [broadcast] Response broadcast
                     * @property {cn.owng.protobuf.plaza.Response.IGame|null} [game] Response game
                     * @property {cn.owng.protobuf.plaza.Response.ICoin|null} [coin] Response coin
                     * @property {cn.owng.protobuf.plaza.Response.IDiamond|null} [diamond] Response diamond
                     */

                    /**
                     * Constructs a new Response.
                     * @memberof cn.owng.protobuf.plaza
                     * @classdesc Represents a Response.
                     * @implements IResponse
                     * @constructor
                     * @param {cn.owng.protobuf.plaza.IResponse=} [properties] Properties to set
                     */
                    function Response(properties) {
                        if (properties)
                            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Response login.
                     * @member {cn.owng.protobuf.plaza.Response.ILogin|null|undefined} login
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.login = null;

                    /**
                     * Response register.
                     * @member {cn.owng.protobuf.plaza.Response.IRegister|null|undefined} register
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.register = null;

                    /**
                     * Response logout.
                     * @member {cn.owng.protobuf.plaza.Response.ILogout|null|undefined} logout
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.logout = null;

                    /**
                     * Response broadcast.
                     * @member {cn.owng.protobuf.plaza.Response.IBroadcast|null|undefined} broadcast
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.broadcast = null;

                    /**
                     * Response game.
                     * @member {cn.owng.protobuf.plaza.Response.IGame|null|undefined} game
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.game = null;

                    /**
                     * Response coin.
                     * @member {cn.owng.protobuf.plaza.Response.ICoin|null|undefined} coin
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.coin = null;

                    /**
                     * Response diamond.
                     * @member {cn.owng.protobuf.plaza.Response.IDiamond|null|undefined} diamond
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Response.prototype.diamond = null;

                    // OneOf field names bound to virtual getters and setters
                    let $oneOfFields;

                    /**
                     * Response messageBody.
                     * @member {"login"|"register"|"logout"|"broadcast"|"game"|"coin"|"diamond"|undefined} messageBody
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     */
                    Object.defineProperty(Response.prototype, "messageBody", {
                        get: $util.oneOfGetter($oneOfFields = ["login", "register", "logout", "broadcast", "game", "coin", "diamond"]),
                        set: $util.oneOfSetter($oneOfFields)
                    });

                    /**
                     * Creates a new Response instance using the specified properties.
                     * @function create
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {cn.owng.protobuf.plaza.IResponse=} [properties] Properties to set
                     * @returns {cn.owng.protobuf.plaza.Response} Response instance
                     */
                    Response.create = function create(properties) {
                        return new Response(properties);
                    };

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.verify|verify} messages.
                     * @function encode
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {cn.owng.protobuf.plaza.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.login != null && Object.hasOwnProperty.call(message, "login"))
                            $root.cn.owng.protobuf.plaza.Response.Login.encode(message.login, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                        if (message.register != null && Object.hasOwnProperty.call(message, "register"))
                            $root.cn.owng.protobuf.plaza.Response.Register.encode(message.register, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                        if (message.logout != null && Object.hasOwnProperty.call(message, "logout"))
                            $root.cn.owng.protobuf.plaza.Response.Logout.encode(message.logout, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                        if (message.broadcast != null && Object.hasOwnProperty.call(message, "broadcast"))
                            $root.cn.owng.protobuf.plaza.Response.Broadcast.encode(message.broadcast, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                        if (message.game != null && Object.hasOwnProperty.call(message, "game"))
                            $root.cn.owng.protobuf.plaza.Response.Game.encode(message.game, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                        if (message.coin != null && Object.hasOwnProperty.call(message, "coin"))
                            $root.cn.owng.protobuf.plaza.Response.Coin.encode(message.coin, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
                        if (message.diamond != null && Object.hasOwnProperty.call(message, "diamond"))
                            $root.cn.owng.protobuf.plaza.Response.Diamond.encode(message.diamond, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
                        return writer;
                    };

                    /**
                     * Encodes the specified Response message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {cn.owng.protobuf.plaza.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer.
                     * @function decode
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {cn.owng.protobuf.plaza.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response();
                        while (reader.pos < end) {
                            let tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.login = $root.cn.owng.protobuf.plaza.Response.Login.decode(reader, reader.uint32());
                                    break;
                                }
                            case 2: {
                                    message.register = $root.cn.owng.protobuf.plaza.Response.Register.decode(reader, reader.uint32());
                                    break;
                                }
                            case 3: {
                                    message.logout = $root.cn.owng.protobuf.plaza.Response.Logout.decode(reader, reader.uint32());
                                    break;
                                }
                            case 4: {
                                    message.broadcast = $root.cn.owng.protobuf.plaza.Response.Broadcast.decode(reader, reader.uint32());
                                    break;
                                }
                            case 5: {
                                    message.game = $root.cn.owng.protobuf.plaza.Response.Game.decode(reader, reader.uint32());
                                    break;
                                }
                            case 6: {
                                    message.coin = $root.cn.owng.protobuf.plaza.Response.Coin.decode(reader, reader.uint32());
                                    break;
                                }
                            case 7: {
                                    message.diamond = $root.cn.owng.protobuf.plaza.Response.Diamond.decode(reader, reader.uint32());
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {cn.owng.protobuf.plaza.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Response message.
                     * @function verify
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Response.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        let properties = {};
                        if (message.login != null && message.hasOwnProperty("login")) {
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Login.verify(message.login);
                                if (error)
                                    return "login." + error;
                            }
                        }
                        if (message.register != null && message.hasOwnProperty("register")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Register.verify(message.register);
                                if (error)
                                    return "register." + error;
                            }
                        }
                        if (message.logout != null && message.hasOwnProperty("logout")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Logout.verify(message.logout);
                                if (error)
                                    return "logout." + error;
                            }
                        }
                        if (message.broadcast != null && message.hasOwnProperty("broadcast")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Broadcast.verify(message.broadcast);
                                if (error)
                                    return "broadcast." + error;
                            }
                        }
                        if (message.game != null && message.hasOwnProperty("game")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Game.verify(message.game);
                                if (error)
                                    return "game." + error;
                            }
                        }
                        if (message.coin != null && message.hasOwnProperty("coin")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Coin.verify(message.coin);
                                if (error)
                                    return "coin." + error;
                            }
                        }
                        if (message.diamond != null && message.hasOwnProperty("diamond")) {
                            if (properties.messageBody === 1)
                                return "messageBody: multiple values";
                            properties.messageBody = 1;
                            {
                                let error = $root.cn.owng.protobuf.plaza.Response.Diamond.verify(message.diamond);
                                if (error)
                                    return "diamond." + error;
                            }
                        }
                        return null;
                    };

                    /**
                     * Creates a Response message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {cn.owng.protobuf.plaza.Response} Response
                     */
                    Response.fromObject = function fromObject(object) {
                        if (object instanceof $root.cn.owng.protobuf.plaza.Response)
                            return object;
                        let message = new $root.cn.owng.protobuf.plaza.Response();
                        if (object.login != null) {
                            if (typeof object.login !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.login: object expected");
                            message.login = $root.cn.owng.protobuf.plaza.Response.Login.fromObject(object.login);
                        }
                        if (object.register != null) {
                            if (typeof object.register !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.register: object expected");
                            message.register = $root.cn.owng.protobuf.plaza.Response.Register.fromObject(object.register);
                        }
                        if (object.logout != null) {
                            if (typeof object.logout !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.logout: object expected");
                            message.logout = $root.cn.owng.protobuf.plaza.Response.Logout.fromObject(object.logout);
                        }
                        if (object.broadcast != null) {
                            if (typeof object.broadcast !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.broadcast: object expected");
                            message.broadcast = $root.cn.owng.protobuf.plaza.Response.Broadcast.fromObject(object.broadcast);
                        }
                        if (object.game != null) {
                            if (typeof object.game !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.game: object expected");
                            message.game = $root.cn.owng.protobuf.plaza.Response.Game.fromObject(object.game);
                        }
                        if (object.coin != null) {
                            if (typeof object.coin !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.coin: object expected");
                            message.coin = $root.cn.owng.protobuf.plaza.Response.Coin.fromObject(object.coin);
                        }
                        if (object.diamond != null) {
                            if (typeof object.diamond !== "object")
                                throw TypeError(".cn.owng.protobuf.plaza.Response.diamond: object expected");
                            message.diamond = $root.cn.owng.protobuf.plaza.Response.Diamond.fromObject(object.diamond);
                        }
                        return message;
                    };

                    /**
                     * Creates a plain object from a Response message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {cn.owng.protobuf.plaza.Response} message Response
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Response.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        let object = {};
                        if (message.login != null && message.hasOwnProperty("login")) {
                            object.login = $root.cn.owng.protobuf.plaza.Response.Login.toObject(message.login, options);
                            if (options.oneofs)
                                object.messageBody = "login";
                        }
                        if (message.register != null && message.hasOwnProperty("register")) {
                            object.register = $root.cn.owng.protobuf.plaza.Response.Register.toObject(message.register, options);
                            if (options.oneofs)
                                object.messageBody = "register";
                        }
                        if (message.logout != null && message.hasOwnProperty("logout")) {
                            object.logout = $root.cn.owng.protobuf.plaza.Response.Logout.toObject(message.logout, options);
                            if (options.oneofs)
                                object.messageBody = "logout";
                        }
                        if (message.broadcast != null && message.hasOwnProperty("broadcast")) {
                            object.broadcast = $root.cn.owng.protobuf.plaza.Response.Broadcast.toObject(message.broadcast, options);
                            if (options.oneofs)
                                object.messageBody = "broadcast";
                        }
                        if (message.game != null && message.hasOwnProperty("game")) {
                            object.game = $root.cn.owng.protobuf.plaza.Response.Game.toObject(message.game, options);
                            if (options.oneofs)
                                object.messageBody = "game";
                        }
                        if (message.coin != null && message.hasOwnProperty("coin")) {
                            object.coin = $root.cn.owng.protobuf.plaza.Response.Coin.toObject(message.coin, options);
                            if (options.oneofs)
                                object.messageBody = "coin";
                        }
                        if (message.diamond != null && message.hasOwnProperty("diamond")) {
                            object.diamond = $root.cn.owng.protobuf.plaza.Response.Diamond.toObject(message.diamond, options);
                            if (options.oneofs)
                                object.messageBody = "diamond";
                        }
                        return object;
                    };

                    /**
                     * Converts this Response to JSON.
                     * @function toJSON
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Response.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Response
                     * @function getTypeUrl
                     * @memberof cn.owng.protobuf.plaza.Response
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Response.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response";
                    };

                    Response.Login = (function() {

                        /**
                         * Properties of a Login.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface ILogin
                         * @property {string|null} [token] Login token
                         * @property {string|null} [userId] Login userId
                         * @property {string|null} [publicId] Login publicId
                         * @property {string|null} [username] Login username
                         * @property {string|null} [avatar] Login avatar
                         * @property {number|null} [gender] Login gender
                         * @property {number|null} [longitude] Login longitude
                         * @property {number|null} [latitude] Login latitude
                         * @property {string|null} [ip] Login ip
                         * @property {Object.<string,string>|null} [extra] Login extra
                         */

                        /**
                         * Constructs a new Login.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Login.
                         * @implements ILogin
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.ILogin=} [properties] Properties to set
                         */
                        function Login(properties) {
                            this.extra = {};
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Login token.
                         * @member {string} token
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.token = "";

                        /**
                         * Login userId.
                         * @member {string} userId
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.userId = "";

                        /**
                         * Login publicId.
                         * @member {string} publicId
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.publicId = "";

                        /**
                         * Login username.
                         * @member {string} username
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.username = "";

                        /**
                         * Login avatar.
                         * @member {string} avatar
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.avatar = "";

                        /**
                         * Login gender.
                         * @member {number} gender
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.gender = 0;

                        /**
                         * Login longitude.
                         * @member {number} longitude
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.longitude = 0;

                        /**
                         * Login latitude.
                         * @member {number} latitude
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.latitude = 0;

                        /**
                         * Login ip.
                         * @member {string} ip
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.ip = "";

                        /**
                         * Login extra.
                         * @member {Object.<string,string>} extra
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         */
                        Login.prototype.extra = $util.emptyObject;

                        /**
                         * Creates a new Login instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogin=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Login} Login instance
                         */
                        Login.create = function create(properties) {
                            return new Login(properties);
                        };

                        /**
                         * Encodes the specified Login message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Login.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogin} message Login message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Login.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.token != null && Object.hasOwnProperty.call(message, "token"))
                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.token);
                            if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.userId);
                            if (message.publicId != null && Object.hasOwnProperty.call(message, "publicId"))
                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.publicId);
                            if (message.username != null && Object.hasOwnProperty.call(message, "username"))
                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.username);
                            if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
                                writer.uint32(/* id 5, wireType 2 =*/42).string(message.avatar);
                            if (message.gender != null && Object.hasOwnProperty.call(message, "gender"))
                                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.gender);
                            if (message.longitude != null && Object.hasOwnProperty.call(message, "longitude"))
                                writer.uint32(/* id 7, wireType 5 =*/61).float(message.longitude);
                            if (message.latitude != null && Object.hasOwnProperty.call(message, "latitude"))
                                writer.uint32(/* id 8, wireType 5 =*/69).float(message.latitude);
                            if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
                                writer.uint32(/* id 9, wireType 2 =*/74).string(message.ip);
                            if (message.extra != null && Object.hasOwnProperty.call(message, "extra"))
                                for (let keys = Object.keys(message.extra), i = 0; i < keys.length; ++i)
                                    writer.uint32(/* id 10, wireType 2 =*/82).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.extra[keys[i]]).ldelim();
                            return writer;
                        };

                        /**
                         * Encodes the specified Login message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Login.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogin} message Login message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Login.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Login message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Login} Login
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Login.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Login(), key, value;
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.token = reader.string();
                                        break;
                                    }
                                case 2: {
                                        message.userId = reader.string();
                                        break;
                                    }
                                case 3: {
                                        message.publicId = reader.string();
                                        break;
                                    }
                                case 4: {
                                        message.username = reader.string();
                                        break;
                                    }
                                case 5: {
                                        message.avatar = reader.string();
                                        break;
                                    }
                                case 6: {
                                        message.gender = reader.int32();
                                        break;
                                    }
                                case 7: {
                                        message.longitude = reader.float();
                                        break;
                                    }
                                case 8: {
                                        message.latitude = reader.float();
                                        break;
                                    }
                                case 9: {
                                        message.ip = reader.string();
                                        break;
                                    }
                                case 10: {
                                        if (message.extra === $util.emptyObject)
                                            message.extra = {};
                                        let end2 = reader.uint32() + reader.pos;
                                        key = "";
                                        value = "";
                                        while (reader.pos < end2) {
                                            let tag2 = reader.uint32();
                                            switch (tag2 >>> 3) {
                                            case 1:
                                                key = reader.string();
                                                break;
                                            case 2:
                                                value = reader.string();
                                                break;
                                            default:
                                                reader.skipType(tag2 & 7);
                                                break;
                                            }
                                        }
                                        message.extra[key] = value;
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Login message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Login} Login
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Login.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Login message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Login.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.token != null && message.hasOwnProperty("token"))
                                if (!$util.isString(message.token))
                                    return "token: string expected";
                            if (message.userId != null && message.hasOwnProperty("userId"))
                                if (!$util.isString(message.userId))
                                    return "userId: string expected";
                            if (message.publicId != null && message.hasOwnProperty("publicId"))
                                if (!$util.isString(message.publicId))
                                    return "publicId: string expected";
                            if (message.username != null && message.hasOwnProperty("username"))
                                if (!$util.isString(message.username))
                                    return "username: string expected";
                            if (message.avatar != null && message.hasOwnProperty("avatar"))
                                if (!$util.isString(message.avatar))
                                    return "avatar: string expected";
                            if (message.gender != null && message.hasOwnProperty("gender"))
                                if (!$util.isInteger(message.gender))
                                    return "gender: integer expected";
                            if (message.longitude != null && message.hasOwnProperty("longitude"))
                                if (typeof message.longitude !== "number")
                                    return "longitude: number expected";
                            if (message.latitude != null && message.hasOwnProperty("latitude"))
                                if (typeof message.latitude !== "number")
                                    return "latitude: number expected";
                            if (message.ip != null && message.hasOwnProperty("ip"))
                                if (!$util.isString(message.ip))
                                    return "ip: string expected";
                            if (message.extra != null && message.hasOwnProperty("extra")) {
                                if (!$util.isObject(message.extra))
                                    return "extra: object expected";
                                let key = Object.keys(message.extra);
                                for (let i = 0; i < key.length; ++i)
                                    if (!$util.isString(message.extra[key[i]]))
                                        return "extra: string{k:string} expected";
                            }
                            return null;
                        };

                        /**
                         * Creates a Login message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Login} Login
                         */
                        Login.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Login)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Login();
                            if (object.token != null)
                                message.token = String(object.token);
                            if (object.userId != null)
                                message.userId = String(object.userId);
                            if (object.publicId != null)
                                message.publicId = String(object.publicId);
                            if (object.username != null)
                                message.username = String(object.username);
                            if (object.avatar != null)
                                message.avatar = String(object.avatar);
                            if (object.gender != null)
                                message.gender = object.gender | 0;
                            if (object.longitude != null)
                                message.longitude = Number(object.longitude);
                            if (object.latitude != null)
                                message.latitude = Number(object.latitude);
                            if (object.ip != null)
                                message.ip = String(object.ip);
                            if (object.extra) {
                                if (typeof object.extra !== "object")
                                    throw TypeError(".cn.owng.protobuf.plaza.Response.Login.extra: object expected");
                                message.extra = {};
                                for (let keys = Object.keys(object.extra), i = 0; i < keys.length; ++i)
                                    message.extra[keys[i]] = String(object.extra[keys[i]]);
                            }
                            return message;
                        };

                        /**
                         * Creates a plain object from a Login message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Login} message Login
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Login.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.objects || options.defaults)
                                object.extra = {};
                            if (options.defaults) {
                                object.token = "";
                                object.userId = "";
                                object.publicId = "";
                                object.username = "";
                                object.avatar = "";
                                object.gender = 0;
                                object.longitude = 0;
                                object.latitude = 0;
                                object.ip = "";
                            }
                            if (message.token != null && message.hasOwnProperty("token"))
                                object.token = message.token;
                            if (message.userId != null && message.hasOwnProperty("userId"))
                                object.userId = message.userId;
                            if (message.publicId != null && message.hasOwnProperty("publicId"))
                                object.publicId = message.publicId;
                            if (message.username != null && message.hasOwnProperty("username"))
                                object.username = message.username;
                            if (message.avatar != null && message.hasOwnProperty("avatar"))
                                object.avatar = message.avatar;
                            if (message.gender != null && message.hasOwnProperty("gender"))
                                object.gender = message.gender;
                            if (message.longitude != null && message.hasOwnProperty("longitude"))
                                object.longitude = options.json && !isFinite(message.longitude) ? String(message.longitude) : message.longitude;
                            if (message.latitude != null && message.hasOwnProperty("latitude"))
                                object.latitude = options.json && !isFinite(message.latitude) ? String(message.latitude) : message.latitude;
                            if (message.ip != null && message.hasOwnProperty("ip"))
                                object.ip = message.ip;
                            let keys2;
                            if (message.extra && (keys2 = Object.keys(message.extra)).length) {
                                object.extra = {};
                                for (let j = 0; j < keys2.length; ++j)
                                    object.extra[keys2[j]] = message.extra[keys2[j]];
                            }
                            return object;
                        };

                        /**
                         * Converts this Login to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Login.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Login
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Login
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Login";
                        };

                        return Login;
                    })();

                    Response.Register = (function() {

                        /**
                         * Properties of a Register.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface IRegister
                         * @property {string|null} [userId] Register userId
                         */

                        /**
                         * Constructs a new Register.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Register.
                         * @implements IRegister
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.IRegister=} [properties] Properties to set
                         */
                        function Register(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Register userId.
                         * @member {string} userId
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @instance
                         */
                        Register.prototype.userId = "";

                        /**
                         * Creates a new Register instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IRegister=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Register} Register instance
                         */
                        Register.create = function create(properties) {
                            return new Register(properties);
                        };

                        /**
                         * Encodes the specified Register message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Register.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IRegister} message Register message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Register.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.userId);
                            return writer;
                        };

                        /**
                         * Encodes the specified Register message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Register.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IRegister} message Register message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Register.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Register message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Register} Register
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Register.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Register();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.userId = reader.string();
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Register message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Register} Register
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Register.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Register message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Register.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.userId != null && message.hasOwnProperty("userId"))
                                if (!$util.isString(message.userId))
                                    return "userId: string expected";
                            return null;
                        };

                        /**
                         * Creates a Register message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Register} Register
                         */
                        Register.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Register)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Register();
                            if (object.userId != null)
                                message.userId = String(object.userId);
                            return message;
                        };

                        /**
                         * Creates a plain object from a Register message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Register} message Register
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Register.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.defaults)
                                object.userId = "";
                            if (message.userId != null && message.hasOwnProperty("userId"))
                                object.userId = message.userId;
                            return object;
                        };

                        /**
                         * Converts this Register to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Register.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Register
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Register
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Register.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Register";
                        };

                        return Register;
                    })();

                    Response.Logout = (function() {

                        /**
                         * Properties of a Logout.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface ILogout
                         */

                        /**
                         * Constructs a new Logout.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Logout.
                         * @implements ILogout
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.ILogout=} [properties] Properties to set
                         */
                        function Logout(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new Logout instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogout=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Logout} Logout instance
                         */
                        Logout.create = function create(properties) {
                            return new Logout(properties);
                        };

                        /**
                         * Encodes the specified Logout message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Logout.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogout} message Logout message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Logout.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified Logout message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Logout.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ILogout} message Logout message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Logout.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Logout message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Logout} Logout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Logout.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Logout();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Logout message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Logout} Logout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Logout.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Logout message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Logout.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates a Logout message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Logout} Logout
                         */
                        Logout.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Logout)
                                return object;
                            return new $root.cn.owng.protobuf.plaza.Response.Logout();
                        };

                        /**
                         * Creates a plain object from a Logout message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Logout} message Logout
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Logout.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this Logout to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Logout.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Logout
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Logout
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Logout.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Logout";
                        };

                        return Logout;
                    })();

                    Response.Broadcast = (function() {

                        /**
                         * Properties of a Broadcast.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface IBroadcast
                         * @property {Array.<string>|null} [message] Broadcast message
                         */

                        /**
                         * Constructs a new Broadcast.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Broadcast.
                         * @implements IBroadcast
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.IBroadcast=} [properties] Properties to set
                         */
                        function Broadcast(properties) {
                            this.message = [];
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Broadcast message.
                         * @member {Array.<string>} message
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @instance
                         */
                        Broadcast.prototype.message = $util.emptyArray;

                        /**
                         * Creates a new Broadcast instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IBroadcast=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Broadcast} Broadcast instance
                         */
                        Broadcast.create = function create(properties) {
                            return new Broadcast(properties);
                        };

                        /**
                         * Encodes the specified Broadcast message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Broadcast.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IBroadcast} message Broadcast message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Broadcast.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.message != null && message.message.length)
                                for (let i = 0; i < message.message.length; ++i)
                                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.message[i]);
                            return writer;
                        };

                        /**
                         * Encodes the specified Broadcast message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Broadcast.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IBroadcast} message Broadcast message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Broadcast.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Broadcast message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Broadcast} Broadcast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Broadcast.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Broadcast();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        if (!(message.message && message.message.length))
                                            message.message = [];
                                        message.message.push(reader.string());
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Broadcast message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Broadcast} Broadcast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Broadcast.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Broadcast message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Broadcast.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.message != null && message.hasOwnProperty("message")) {
                                if (!Array.isArray(message.message))
                                    return "message: array expected";
                                for (let i = 0; i < message.message.length; ++i)
                                    if (!$util.isString(message.message[i]))
                                        return "message: string[] expected";
                            }
                            return null;
                        };

                        /**
                         * Creates a Broadcast message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Broadcast} Broadcast
                         */
                        Broadcast.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Broadcast)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Broadcast();
                            if (object.message) {
                                if (!Array.isArray(object.message))
                                    throw TypeError(".cn.owng.protobuf.plaza.Response.Broadcast.message: array expected");
                                message.message = [];
                                for (let i = 0; i < object.message.length; ++i)
                                    message.message[i] = String(object.message[i]);
                            }
                            return message;
                        };

                        /**
                         * Creates a plain object from a Broadcast message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Broadcast} message Broadcast
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Broadcast.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.arrays || options.defaults)
                                object.message = [];
                            if (message.message && message.message.length) {
                                object.message = [];
                                for (let j = 0; j < message.message.length; ++j)
                                    object.message[j] = message.message[j];
                            }
                            return object;
                        };

                        /**
                         * Converts this Broadcast to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Broadcast.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Broadcast
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Broadcast
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Broadcast.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Broadcast";
                        };

                        return Broadcast;
                    })();

                    Response.Game = (function() {

                        /**
                         * Properties of a Game.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface IGame
                         * @property {string|null} [code] Game code
                         * @property {string|null} [name] Game name
                         * @property {string|null} [description] Game description
                         * @property {string|null} [banner] Game banner
                         * @property {string|null} [icon] Game icon
                         * @property {string|null} [deployment] Game deployment
                         * @property {Array.<cn.owng.protobuf.plaza.Response.Game.IService>|null} [services] Game services
                         */

                        /**
                         * Constructs a new Game.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Game.
                         * @implements IGame
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.IGame=} [properties] Properties to set
                         */
                        function Game(properties) {
                            this.services = [];
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Game code.
                         * @member {string} code
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.code = "";

                        /**
                         * Game name.
                         * @member {string} name
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.name = "";

                        /**
                         * Game description.
                         * @member {string} description
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.description = "";

                        /**
                         * Game banner.
                         * @member {string} banner
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.banner = "";

                        /**
                         * Game icon.
                         * @member {string} icon
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.icon = "";

                        /**
                         * Game deployment.
                         * @member {string} deployment
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.deployment = "";

                        /**
                         * Game services.
                         * @member {Array.<cn.owng.protobuf.plaza.Response.Game.IService>} services
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         */
                        Game.prototype.services = $util.emptyArray;

                        /**
                         * Creates a new Game instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IGame=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Game} Game instance
                         */
                        Game.create = function create(properties) {
                            return new Game(properties);
                        };

                        /**
                         * Encodes the specified Game message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Game.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IGame} message Game message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Game.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.code);
                            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
                            if (message.description != null && Object.hasOwnProperty.call(message, "description"))
                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.description);
                            if (message.banner != null && Object.hasOwnProperty.call(message, "banner"))
                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.banner);
                            if (message.icon != null && Object.hasOwnProperty.call(message, "icon"))
                                writer.uint32(/* id 5, wireType 2 =*/42).string(message.icon);
                            if (message.deployment != null && Object.hasOwnProperty.call(message, "deployment"))
                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.deployment);
                            if (message.services != null && message.services.length)
                                for (let i = 0; i < message.services.length; ++i)
                                    $root.cn.owng.protobuf.plaza.Response.Game.Service.encode(message.services[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
                            return writer;
                        };

                        /**
                         * Encodes the specified Game message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Game.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IGame} message Game message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Game.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Game message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Game} Game
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Game.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Game();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.code = reader.string();
                                        break;
                                    }
                                case 2: {
                                        message.name = reader.string();
                                        break;
                                    }
                                case 3: {
                                        message.description = reader.string();
                                        break;
                                    }
                                case 4: {
                                        message.banner = reader.string();
                                        break;
                                    }
                                case 5: {
                                        message.icon = reader.string();
                                        break;
                                    }
                                case 6: {
                                        message.deployment = reader.string();
                                        break;
                                    }
                                case 7: {
                                        if (!(message.services && message.services.length))
                                            message.services = [];
                                        message.services.push($root.cn.owng.protobuf.plaza.Response.Game.Service.decode(reader, reader.uint32()));
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Game message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Game} Game
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Game.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Game message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Game.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.code != null && message.hasOwnProperty("code"))
                                if (!$util.isString(message.code))
                                    return "code: string expected";
                            if (message.name != null && message.hasOwnProperty("name"))
                                if (!$util.isString(message.name))
                                    return "name: string expected";
                            if (message.description != null && message.hasOwnProperty("description"))
                                if (!$util.isString(message.description))
                                    return "description: string expected";
                            if (message.banner != null && message.hasOwnProperty("banner"))
                                if (!$util.isString(message.banner))
                                    return "banner: string expected";
                            if (message.icon != null && message.hasOwnProperty("icon"))
                                if (!$util.isString(message.icon))
                                    return "icon: string expected";
                            if (message.deployment != null && message.hasOwnProperty("deployment"))
                                if (!$util.isString(message.deployment))
                                    return "deployment: string expected";
                            if (message.services != null && message.hasOwnProperty("services")) {
                                if (!Array.isArray(message.services))
                                    return "services: array expected";
                                for (let i = 0; i < message.services.length; ++i) {
                                    let error = $root.cn.owng.protobuf.plaza.Response.Game.Service.verify(message.services[i]);
                                    if (error)
                                        return "services." + error;
                                }
                            }
                            return null;
                        };

                        /**
                         * Creates a Game message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Game} Game
                         */
                        Game.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Game)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Game();
                            if (object.code != null)
                                message.code = String(object.code);
                            if (object.name != null)
                                message.name = String(object.name);
                            if (object.description != null)
                                message.description = String(object.description);
                            if (object.banner != null)
                                message.banner = String(object.banner);
                            if (object.icon != null)
                                message.icon = String(object.icon);
                            if (object.deployment != null)
                                message.deployment = String(object.deployment);
                            if (object.services) {
                                if (!Array.isArray(object.services))
                                    throw TypeError(".cn.owng.protobuf.plaza.Response.Game.services: array expected");
                                message.services = [];
                                for (let i = 0; i < object.services.length; ++i) {
                                    if (typeof object.services[i] !== "object")
                                        throw TypeError(".cn.owng.protobuf.plaza.Response.Game.services: object expected");
                                    message.services[i] = $root.cn.owng.protobuf.plaza.Response.Game.Service.fromObject(object.services[i]);
                                }
                            }
                            return message;
                        };

                        /**
                         * Creates a plain object from a Game message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Game} message Game
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Game.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.arrays || options.defaults)
                                object.services = [];
                            if (options.defaults) {
                                object.code = "";
                                object.name = "";
                                object.description = "";
                                object.banner = "";
                                object.icon = "";
                                object.deployment = "";
                            }
                            if (message.code != null && message.hasOwnProperty("code"))
                                object.code = message.code;
                            if (message.name != null && message.hasOwnProperty("name"))
                                object.name = message.name;
                            if (message.description != null && message.hasOwnProperty("description"))
                                object.description = message.description;
                            if (message.banner != null && message.hasOwnProperty("banner"))
                                object.banner = message.banner;
                            if (message.icon != null && message.hasOwnProperty("icon"))
                                object.icon = message.icon;
                            if (message.deployment != null && message.hasOwnProperty("deployment"))
                                object.deployment = message.deployment;
                            if (message.services && message.services.length) {
                                object.services = [];
                                for (let j = 0; j < message.services.length; ++j)
                                    object.services[j] = $root.cn.owng.protobuf.plaza.Response.Game.Service.toObject(message.services[j], options);
                            }
                            return object;
                        };

                        /**
                         * Converts this Game to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Game.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Game
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Game
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Game.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Game";
                        };

                        Game.Service = (function() {

                            /**
                             * Properties of a Service.
                             * @memberof cn.owng.protobuf.plaza.Response.Game
                             * @interface IService
                             * @property {string|null} [name] Service name
                             * @property {string|null} [address] Service address
                             */

                            /**
                             * Constructs a new Service.
                             * @memberof cn.owng.protobuf.plaza.Response.Game
                             * @classdesc Represents a Service.
                             * @implements IService
                             * @constructor
                             * @param {cn.owng.protobuf.plaza.Response.Game.IService=} [properties] Properties to set
                             */
                            function Service(properties) {
                                if (properties)
                                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                        if (properties[keys[i]] != null)
                                            this[keys[i]] = properties[keys[i]];
                            }

                            /**
                             * Service name.
                             * @member {string} name
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @instance
                             */
                            Service.prototype.name = "";

                            /**
                             * Service address.
                             * @member {string} address
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @instance
                             */
                            Service.prototype.address = "";

                            /**
                             * Creates a new Service instance using the specified properties.
                             * @function create
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {cn.owng.protobuf.plaza.Response.Game.IService=} [properties] Properties to set
                             * @returns {cn.owng.protobuf.plaza.Response.Game.Service} Service instance
                             */
                            Service.create = function create(properties) {
                                return new Service(properties);
                            };

                            /**
                             * Encodes the specified Service message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Game.Service.verify|verify} messages.
                             * @function encode
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {cn.owng.protobuf.plaza.Response.Game.IService} message Service message or plain object to encode
                             * @param {$protobuf.Writer} [writer] Writer to encode to
                             * @returns {$protobuf.Writer} Writer
                             */
                            Service.encode = function encode(message, writer) {
                                if (!writer)
                                    writer = $Writer.create();
                                if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
                                if (message.address != null && Object.hasOwnProperty.call(message, "address"))
                                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.address);
                                return writer;
                            };

                            /**
                             * Encodes the specified Service message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Game.Service.verify|verify} messages.
                             * @function encodeDelimited
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {cn.owng.protobuf.plaza.Response.Game.IService} message Service message or plain object to encode
                             * @param {$protobuf.Writer} [writer] Writer to encode to
                             * @returns {$protobuf.Writer} Writer
                             */
                            Service.encodeDelimited = function encodeDelimited(message, writer) {
                                return this.encode(message, writer).ldelim();
                            };

                            /**
                             * Decodes a Service message from the specified reader or buffer.
                             * @function decode
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                             * @param {number} [length] Message length if known beforehand
                             * @returns {cn.owng.protobuf.plaza.Response.Game.Service} Service
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            Service.decode = function decode(reader, length) {
                                if (!(reader instanceof $Reader))
                                    reader = $Reader.create(reader);
                                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Game.Service();
                                while (reader.pos < end) {
                                    let tag = reader.uint32();
                                    switch (tag >>> 3) {
                                    case 1: {
                                            message.name = reader.string();
                                            break;
                                        }
                                    case 2: {
                                            message.address = reader.string();
                                            break;
                                        }
                                    default:
                                        reader.skipType(tag & 7);
                                        break;
                                    }
                                }
                                return message;
                            };

                            /**
                             * Decodes a Service message from the specified reader or buffer, length delimited.
                             * @function decodeDelimited
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                             * @returns {cn.owng.protobuf.plaza.Response.Game.Service} Service
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            Service.decodeDelimited = function decodeDelimited(reader) {
                                if (!(reader instanceof $Reader))
                                    reader = new $Reader(reader);
                                return this.decode(reader, reader.uint32());
                            };

                            /**
                             * Verifies a Service message.
                             * @function verify
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {Object.<string,*>} message Plain object to verify
                             * @returns {string|null} `null` if valid, otherwise the reason why it is not
                             */
                            Service.verify = function verify(message) {
                                if (typeof message !== "object" || message === null)
                                    return "object expected";
                                if (message.name != null && message.hasOwnProperty("name"))
                                    if (!$util.isString(message.name))
                                        return "name: string expected";
                                if (message.address != null && message.hasOwnProperty("address"))
                                    if (!$util.isString(message.address))
                                        return "address: string expected";
                                return null;
                            };

                            /**
                             * Creates a Service message from a plain object. Also converts values to their respective internal types.
                             * @function fromObject
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {Object.<string,*>} object Plain object
                             * @returns {cn.owng.protobuf.plaza.Response.Game.Service} Service
                             */
                            Service.fromObject = function fromObject(object) {
                                if (object instanceof $root.cn.owng.protobuf.plaza.Response.Game.Service)
                                    return object;
                                let message = new $root.cn.owng.protobuf.plaza.Response.Game.Service();
                                if (object.name != null)
                                    message.name = String(object.name);
                                if (object.address != null)
                                    message.address = String(object.address);
                                return message;
                            };

                            /**
                             * Creates a plain object from a Service message. Also converts values to other types if specified.
                             * @function toObject
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {cn.owng.protobuf.plaza.Response.Game.Service} message Service
                             * @param {$protobuf.IConversionOptions} [options] Conversion options
                             * @returns {Object.<string,*>} Plain object
                             */
                            Service.toObject = function toObject(message, options) {
                                if (!options)
                                    options = {};
                                let object = {};
                                if (options.defaults) {
                                    object.name = "";
                                    object.address = "";
                                }
                                if (message.name != null && message.hasOwnProperty("name"))
                                    object.name = message.name;
                                if (message.address != null && message.hasOwnProperty("address"))
                                    object.address = message.address;
                                return object;
                            };

                            /**
                             * Converts this Service to JSON.
                             * @function toJSON
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @instance
                             * @returns {Object.<string,*>} JSON object
                             */
                            Service.prototype.toJSON = function toJSON() {
                                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                            };

                            /**
                             * Gets the default type url for Service
                             * @function getTypeUrl
                             * @memberof cn.owng.protobuf.plaza.Response.Game.Service
                             * @static
                             * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns {string} The default type url
                             */
                            Service.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                                if (typeUrlPrefix === undefined) {
                                    typeUrlPrefix = "type.googleapis.com";
                                }
                                return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Game.Service";
                            };

                            return Service;
                        })();

                        return Game;
                    })();

                    Response.Coin = (function() {

                        /**
                         * Properties of a Coin.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface ICoin
                         * @property {number|null} [value] Coin value
                         */

                        /**
                         * Constructs a new Coin.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Coin.
                         * @implements ICoin
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.ICoin=} [properties] Properties to set
                         */
                        function Coin(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Coin value.
                         * @member {number} value
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @instance
                         */
                        Coin.prototype.value = 0;

                        /**
                         * Creates a new Coin instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ICoin=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Coin} Coin instance
                         */
                        Coin.create = function create(properties) {
                            return new Coin(properties);
                        };

                        /**
                         * Encodes the specified Coin message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Coin.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ICoin} message Coin message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Coin.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.value != null && Object.hasOwnProperty.call(message, "value"))
                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value);
                            return writer;
                        };

                        /**
                         * Encodes the specified Coin message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Coin.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.ICoin} message Coin message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Coin.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Coin message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Coin} Coin
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Coin.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Coin();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.value = reader.int32();
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Coin message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Coin} Coin
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Coin.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Coin message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Coin.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.value != null && message.hasOwnProperty("value"))
                                if (!$util.isInteger(message.value))
                                    return "value: integer expected";
                            return null;
                        };

                        /**
                         * Creates a Coin message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Coin} Coin
                         */
                        Coin.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Coin)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Coin();
                            if (object.value != null)
                                message.value = object.value | 0;
                            return message;
                        };

                        /**
                         * Creates a plain object from a Coin message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Coin} message Coin
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Coin.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.defaults)
                                object.value = 0;
                            if (message.value != null && message.hasOwnProperty("value"))
                                object.value = message.value;
                            return object;
                        };

                        /**
                         * Converts this Coin to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Coin.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Coin
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Coin
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Coin.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Coin";
                        };

                        return Coin;
                    })();

                    Response.Diamond = (function() {

                        /**
                         * Properties of a Diamond.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @interface IDiamond
                         * @property {number|null} [value] Diamond value
                         */

                        /**
                         * Constructs a new Diamond.
                         * @memberof cn.owng.protobuf.plaza.Response
                         * @classdesc Represents a Diamond.
                         * @implements IDiamond
                         * @constructor
                         * @param {cn.owng.protobuf.plaza.Response.IDiamond=} [properties] Properties to set
                         */
                        function Diamond(properties) {
                            if (properties)
                                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Diamond value.
                         * @member {number} value
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @instance
                         */
                        Diamond.prototype.value = 0;

                        /**
                         * Creates a new Diamond instance using the specified properties.
                         * @function create
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IDiamond=} [properties] Properties to set
                         * @returns {cn.owng.protobuf.plaza.Response.Diamond} Diamond instance
                         */
                        Diamond.create = function create(properties) {
                            return new Diamond(properties);
                        };

                        /**
                         * Encodes the specified Diamond message. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Diamond.verify|verify} messages.
                         * @function encode
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IDiamond} message Diamond message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Diamond.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            if (message.value != null && Object.hasOwnProperty.call(message, "value"))
                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value);
                            return writer;
                        };

                        /**
                         * Encodes the specified Diamond message, length delimited. Does not implicitly {@link cn.owng.protobuf.plaza.Response.Diamond.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.IDiamond} message Diamond message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        Diamond.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes a Diamond message from the specified reader or buffer.
                         * @function decode
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {cn.owng.protobuf.plaza.Response.Diamond} Diamond
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Diamond.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.cn.owng.protobuf.plaza.Response.Diamond();
                            while (reader.pos < end) {
                                let tag = reader.uint32();
                                switch (tag >>> 3) {
                                case 1: {
                                        message.value = reader.int32();
                                        break;
                                    }
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes a Diamond message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {cn.owng.protobuf.plaza.Response.Diamond} Diamond
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        Diamond.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies a Diamond message.
                         * @function verify
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        Diamond.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            if (message.value != null && message.hasOwnProperty("value"))
                                if (!$util.isInteger(message.value))
                                    return "value: integer expected";
                            return null;
                        };

                        /**
                         * Creates a Diamond message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {cn.owng.protobuf.plaza.Response.Diamond} Diamond
                         */
                        Diamond.fromObject = function fromObject(object) {
                            if (object instanceof $root.cn.owng.protobuf.plaza.Response.Diamond)
                                return object;
                            let message = new $root.cn.owng.protobuf.plaza.Response.Diamond();
                            if (object.value != null)
                                message.value = object.value | 0;
                            return message;
                        };

                        /**
                         * Creates a plain object from a Diamond message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {cn.owng.protobuf.plaza.Response.Diamond} message Diamond
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        Diamond.toObject = function toObject(message, options) {
                            if (!options)
                                options = {};
                            let object = {};
                            if (options.defaults)
                                object.value = 0;
                            if (message.value != null && message.hasOwnProperty("value"))
                                object.value = message.value;
                            return object;
                        };

                        /**
                         * Converts this Diamond to JSON.
                         * @function toJSON
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        Diamond.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for Diamond
                         * @function getTypeUrl
                         * @memberof cn.owng.protobuf.plaza.Response.Diamond
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        Diamond.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/cn.owng.protobuf.plaza.Response.Diamond";
                        };

                        return Diamond;
                    })();

                    return Response;
                })();

                return plaza;
            })();

            return protobuf;
        })();

        return owng;
    })();

    return cn;
})();

export { $root as default };
